有没有一种扫码盒子,装流量卡,扫一个url的二维码,然后直接打开网址? |
1、匹配字符串中最多只能有三种不同的字符:
"aaa" 包含a true
"abbabb" 包含ab true
"abbcabbc 包含abc true
"abbccuu" 包含abcu false
"132321123" 包含123 true
"1234234" 包含1234 false
2、匹配字符串中是否有长度>=7的回文子串
"aababcdcbab" babcdcbab 长度9 true
"aaaabcba" abcba 长度5 false
"bb2345432" 2345432 长度7 true
可以使用下面的正则表达式:^(?:(\w)(?!\1)(\w)(?!\1|\2)(\w)){0,2}\w*$
这个正则表达式使用了前行否定断言和后向引用等特性,能够确保匹配的字符串中最多只包含三种不同字符,并且字符的顺序与原字符串相同。具体来说,正则的匹配方式如下:
首先,通过匹配 0 至 2 组符合要求的字符,确定字符串中是否最多只有 3 种不同字符;
然后,判断剩余的字符是否仍然属于这 3 种字符之一,即可得出最终的匹配结果。
以下是 Python 语言中使用该正则表达式的示例代码:
import re
def match_string(s: str) -> bool:
pattern = r'^(?:(\w)(?!\1)(\w)(?!\1|\2)(\w)){0,2}\w*$'
return bool(re.match(pattern, s))
其中,正则表达式 ^(?:(\w)(?!\1)(\w)(?!\1|\2)(\w)){0,2}\w*$
被包含在字符串中,并通过 re.match()
函数进行匹配操作。如果匹配成功,即返回 True,否则返回 False。
@shadow_2019 用了chatgpt,但是结果不对
@RockLee2020 没问题,两个写出来,v50话费
@hajkmw 让他接着改
1、对于第一个问题,正则表达式并不是最好的工具,因为它并不直接支持统计不同字符的数量。然而,如果你确实需要使用正则表达式,你可以使用这个复杂的方式:
regex
Copy code
^(?:(.)(?!.\1)|(.(?!.\2))(.(?!.\3))?.)*$
这个正则表达式会尝试匹配最多三个不同的字符。但请注意,这个表达式的效率可能会比较低,特别是对于较长的字符串。
2、找出长度>=7的回文子串也是一个复杂的问题,正则表达式可能不是最佳选择。因为正则表达式本身不支持“回文”的概念,所以你不能直接使用一个正则表达式来匹配一个回文。然而,你可以编写一个循环,通过在每个可能的子字符串中运行一个检查来解决这个问题。
但是,如果你确定你的回文长度为一个特定的值,例如7,你可以构造一个正则表达式来检查。例如,以下正则表达式会匹配一个长度为7的回文:
regex
Copy code
(.)(.)(.)(.)\4\3\2\1
但这个正则表达式只能匹配长度为7的回文,而不能匹配长度大于7的回文。而且,如果你想匹配不同长度的回文,你需要为每个长度写一个不同的正则表达式,这将会很麻烦。
在大多数情况下,你最好使用一个编程语言来解决这些问题,而不是依赖正则表达式。例如,你可以在Python中使用集合和切片来轻松地解决这两个问题。
问了下gpt:
1、^(?:(.)(?:(?!\1)(.)(?:(?!\1|\2)(.))?)?)?$
2、\b(\w)(\w)?(\w)?(\w)?(\w)?(\w)?\1(\w)?(\w)?(\w)?(\w)?(\w)?\b
@huteng 是的,我也问过,是错的
@zclzhangcl 刚刚试下了,好像也不对
过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号